{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 开始阅读前的一些准备"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 内容概要"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "关于 Python 编程的第一部分总计 7 章，主要内容概括为：\n",
    "\n",
    "> 1. 以布尔值为入口开始理解程序本质\n",
    "> 1. 了解值的分类和运算方法\n",
    "> 1. 简要了解流程控制的原理\n",
    "> 1. 简要了解函数的基本构成\n",
    "> 1. 相对完整地了解字符串的操作\n",
    "> 1. 了解各种容器的基础操作\n",
    "> 1. 简要了解文件的读写操作"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 阅读策略"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "首先，不要试图一下子就全部搞懂。这不仅很难，**在最初的时候也完全没必要**。\n",
    "\n",
    "因为这部分的知识结构中，充满了 “过早引用”。请在第一遍粗略完成第 1 部分中的 E1 ~ E7 之后，再去阅读《[如何从容应对 “过早引用”？](Part.1.F.deal-with-forward-references.ipynb)》。\n",
    "\n",
    "其次，这一部分，注定要**反复阅读若干遍**。\n",
    "\n",
    "在开始之前，要明确这一部分的阅读目标。\n",
    "\n",
    "这一部分的目标，不是让你读完之后就可以开始写程序；也不是让你读完之后就对编程或者 Python 编程有了完整的了解，甚至不是让你真的学会什么…… 这一部分的目标，只是让你 “**脱盲**”。\n",
    "\n",
    "不要以为脱盲是很容易的事情。你看，所有人出生的时候，都天然是 “文盲”；人们要上好多年的学，才能够真正 “脱盲” —— 仔细想想吧，小学毕业的时候，所有人就真的彻底脱盲了吗？\n",
    "\n",
    "以中文脱盲为例，学字的同时，还要学习笔划；为了学更多的字，要学拼音，要学如何使用《新华字典》……\n",
    "\n",
    "学会了一些基础字之后，要学更多的词，而后在练习了那么多造词造句之后，依然会经常用错…… 你看，脱盲，和阅读能力强之间距离很长呢；不仅如此，阅读能力强和写作能力强之间的距离更长……\n",
    "\n",
    "反复阅读这一部分的结果是：\n",
    "\n",
    "> * 你对基本概念有了一定的了解\n",
    "> * 你开始有能力相对轻松地阅读部分官方文档\n",
    "> * 你可以读懂一些简单的代码\n",
    "\n",
    "仅此而已。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 心理建设"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "当我们开始学习一项新技能的时候，我们的大脑会不由自主地紧张。可这只不过是多年之间在学校里不断受挫的积累效应 —— 学校里别的地方不一定行，可有个地方特别行：给学生制造全方位、无死角、层层递进的挫败感。\n",
    "\n",
    "可是，你要永远记住两个字：\n",
    "\n",
    "> 别怕！\n",
    "\n",
    "用四个字也行：\n",
    "\n",
    "> 啥也别怕！\n",
    "\n",
    "六个字也可以：\n",
    "\n",
    "> 没什么可怕的！\n",
    "\n",
    "我遇到最多的孱弱之语大抵是这样的：\n",
    "\n",
    "> 我一个文科生……\n",
    "\n",
    "哈哈，从某个层面望过去，其实吧，编程既不是文科也不是理科…… 它更像是 “手工课”。你越学就越清楚这个事实，它就好像是你做木工一样，学会使用一个工具，再学会使用另外一个工具，其实总共就没多少工具。然后，你更多做的是各种拼接的工作，至于能做出什么东西，最后完全靠你的想象力……\n",
    "\n",
    "十来岁的孩子都可以学会的东西，你怕什么？\n",
    "\n",
    "**别怕**，无论说给自己，还是讲给别人，都是一样的，它可能是人生中最重要的鼓励词。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 关于这一部分内容中的代码"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "所有的代码，都可以在选中代码单元格（Code Cell）之后，按快捷键 `⇧ ⏎` 或 `^ ⏎` 执行，查看结果。\n",
    "\n",
    "少量执行结果太长的代码，其输出被设置成了 “Scrolled”，是可以通过触摸板或鼠标滑轮上下滑动的。\n",
    "\n",
    "为了避免大量使用 `print()` 才能看到输出结果，在很多的代码单元格中，开头插入了以下代码：\n",
    "\n",
    "```python\n",
    "from IPython.core.interactiveshell import InteractiveShell\n",
    "InteractiveShell.ast_node_interactivity = \"all\"\n",
    "```\n",
    "你可以暂时忽略它们的意义和工作原理。注意：有时，你需要在执行第二次的时候，才能看到全部输出结果。\n",
    "\n",
    "另外，有少量代码示例，为了让读者每次执行的时候看到不同的结果，使用了随机函数，为其中的变量赋值，比如：\n",
    "\n",
    "```python\n",
    "import random\n",
    "r = random.randrange(1, 1000)\n",
    "```\n",
    "\n",
    "同样，你可以暂时忽略它们的意义和工作原理；只需要知道因为有它们在，所以每次执行那个单元格中的代码会有不同的结果就可以了。\n",
    "\n",
    "如果你不是直接在网站上浏览这本 “书”、或者不是在阅读印刷版，而是在本地自己搭建 Jupyterlab 环境使用，那么请参阅附录《[Jupyterlab 的安装与配置](T-appendix.jupyter-installation-and-setup.ipynb)》。\n",
    "\n",
    "> **注意**：尤其需要仔细看看《[Jupyterlab 的安装与配置](T-appendix.jupyter-installation-and-setup.ipynb)》的《关于 Jupyter lab themes》这一小节 —— 否则，阅读体验会有很大差别。\n",
    "\n",
    "另外，如果你使用的是 [nteract](https://nteract.io) 桌面版 App 浏览 `.ipynb` 文件，那么有些使用了 `input()` 函数的代码是无法在 nteract 中执行的。"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
